/**
 * ES6 promise Generator 
 * 
 * ES7 async
 * 
 * Promise是构造函数  
 * 
 * let p =new Promise((resolve,reject) => {
 *      setTimeout(() => {
 *          reject('abc')
 *      },1000)
 * })
 * 
 * p.then((res) => {
 *     
 * })
 * 
 * p.catch(ck)
 * 
 * p.finally()
 * 
 * Promise.all([promise1,promise2...])  
 * 
 */

// let p =new Promise((resolve,reject) => {
//     setTimeout(() => {
//         reject('cuowu')
//     },1000)
// })

// p.then((res) => {
//     console.log(res);
// }).catch((error) => {
//     console.log(error)
// }).finally(() =>{
//     console.log('end')
// })


/**
 * Generator 异步编程的一种方案  返回值是遍历器对象
 * 
 * for...of..
 * 
 * next()
*/

function* hello(){
    yield 'hello';
    yield 'world';
    return 'end'
}

let obj = hello();

// for(let h of obj){
//     console.log(h)
// }

console.log(obj.next())
console.log(obj.next())
console.log(obj.next())
// console.log(obj);

/**
 * async 是Generator的语法糖  返回值是promise
 * 
 * 语法：
 * 
 * 第一种：
 * 
 * async function getString(){
 *      await  
 * 
 *      await
 * }
 * 
 * 第二种:
 * 
 * let getString = async function(){
 *     await
 * }
 * 
 * 
*/

async function getString(){
    let string = await new Promise((resolve,reject) => {
        setTimeout(() => {
            resolve('abc')
        },1000)
    })

    return string  //注：return 返回值不是一个promise，用Promise.reslove()转成promise对象
}

// console.log(getString())

getString().then((res) => {
    console.log(res); 
})

//获取uid --> billList

 